package com.orangelife.webservice.service.propFeePollfee;

import java.util.List;
import java.util.Map;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.apache.cxf.interceptor.InInterceptors;
import org.apache.cxf.interceptor.OutInterceptors;
import org.apache.cxf.jaxrs.ext.multipart.Attachment;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeePollfee.model.PollfeeEditDto;
import com.orangelife.service.propFeePollfee.model.PropFeePollfeeDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * propFeePollfee类 的WebService基本作业
 * 
 * @author @author zhr
 * 
 * @version 1.1.0
 * 
 * @date 2016-07-25 10:47:47
 * ==============================================================
 */
@WebService
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
public interface IPropFeePollfeeWebService {

	/**
	 * 用途 添加 （橙子生活）
	 * 
	 * @author zhr
	 * @date创建时间 2016-07-25 10:47:47
	 * @param servletRequest
	 * @param propFeePollfee
	 * @return
	 * @throws Exception
	 */

	@POST
	@Path("/add")
	@Produces({ "application/json" })
	public Response addPropFeePollfee(
			@Context HttpServletRequest servletRequest,
			@WebParam PropFeePollfeeDto propFeePollfee) throws Exception;

	/****
	 * 批量添加
	 * 
	 * @param servletRequest
	 * @param propFeePollfee
	 * @return
	 * @throws Exception
	 */
	@POST
	@Path("/addPropFeePollfee")
	@Produces({ "application/json" })
	public Response addPropFeePollfees(
			@Context HttpServletRequest servletRequest,
			List<Map<String, Object>> propFeePollfee) throws Exception;

	/**
	 * 用途 修改（橙子生活）
	 * 
	 * @author zhr
	 * @date创建时间 2016-07-25 10:47:47
	 * @param servletRequest
	 * @param propFeePollfee
	 * @return
	 * @throws Exception
	 */
	@PUT
	@Path("/edit")
	@Produces({ "application/json" })
	public Response editPropFeePollfee(
			@Context HttpServletRequest servletRequest,
			@WebParam PropFeePollfeeDto propFeePollfee) throws Exception;

	/**
	 * 用途 删除（橙子生活）
	 * 
	 * @date 创建时间 2016-07-25 10:47:47
	 * @author zhr
	 * @param servletRequest
	 * @param pollfeeID
	 * @return
	 * @throws Exception
	 */
	@DELETE
	@Path("{pollfeeID}")
	@Produces({ "application/json" })
	public Response deletePropFeePollfee(
			@Context HttpServletRequest servletRequest,
			@PathParam("pollfeeID") String pollfeeID) throws Exception;

	/**
	 * 用途 详情（橙子生活）
	 * 
	 * @date 创建时间 2016-07-25 10:47:47
	 * @author zhr
	 * @param servletRequest
	 * @param pollfeeID
	 * @return
	 * @throws Exception
	 */
	@GET
	@Path("{pollfeeID}/")
	@Produces({ "application/json" })
	public Response findPropFeePollfeeByID(
			@Context HttpServletRequest servletRequest,
			@PathParam("pollfeeID") String pollfeeID) throws Exception;

	/**
	 * 用途 查询列表（橙子生活）
	 * 
	 * @author zhr
	 * @date 创建时间 2016-07-25 10:47:47
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageIndex
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws Exception
	 */
	@GET
	@Produces({ "application/json" })
	public Response getAllPropFeePollfee(
			@Context HttpServletRequest servletRequest,
			@QueryParam("commID") String commID,
			@QueryParam("ruleID") String ruleID,
			@QueryParam("search") String search,
			@QueryParam("tsCreate") String tsCreate,
			@QueryParam("pageIndex") String pageIndex,
			@QueryParam("pageSize") String pageSize) throws Exception;

	/***
	 * 查询日志
	 * 
	 * @param servletRequest
	 * @param commID
	 * @param search
	 * @param tsCreate
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws Exception
	 */
	@GET
	@Path("logsInfo")
	@Produces({ "application/json" })
	public Response getImportLogsInfo(
			@Context HttpServletRequest servletRequest,
			@QueryParam("commID") String commID,
			@QueryParam("search") String search,
			@QueryParam("tsCreate") String tsCreate,
			@QueryParam("pageIndex") String pageIndex,
			@QueryParam("pageSize") String pageSize) throws Exception;

	/**
	 * 用途 查询列表（橙子生活）
	 * 
	 * @author zhr
	 * @date 创建时间 2016-07-25 10:47:47
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageIndex
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws Exception
	 */

	@POST
	@Path("/bauthfinds")
	@Produces({ "application/json" })
	public Response bauthFindPropFeePollfees(
			@Context HttpServletRequest servletRequest,
			@WebParam Map<String, Object> propFeePollfee) throws Exception;

	/**
	 * 用途 查询列表（橙子生活）
	 * 
	 * @author zhr
	 * @date 创建时间 2016-07-25 10:47:47
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageIndex
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws Exception
	 */

	@POST
	@Path("/bauthfind")
	@Produces({ "application/json" })
	public Response bauthFindPropFeePollfee(
			@Context HttpServletRequest servletRequest,
			@WebParam List<String> propFeePollfee) throws Exception;

	/***
	 * 清除缓存
	 * 
	 * @param request
	 * @param response
	 * @return
	 * @throws AppBizException
	 */
	@GET
	@Path("clearCache")
	@Produces({ "application/json" })
	public Response clearCache(@Context HttpServletRequest request,
			@Context HttpServletResponse response) throws Exception;

	/***
	 * 下载初始化的excel
	 * 
	 * @param servletRequest
	 * @param servletResponse
	 * @param commID
	 * @return
	 * @throws Exception
	 */
	@GET
	@Path("downPollfee")
	@Consumes({ "application/json" })
	@Produces(MediaType.APPLICATION_OCTET_STREAM)
	public Response downPollfee(@Context HttpServletRequest servletRequest,
			@Context HttpServletResponse servletResponse,
			@QueryParam("search") String search,
			@QueryParam("commID") String commID,
			@QueryParam("ruleID") String ruleID, @QueryParam("comm") String comm)
			throws Exception;

	/***
	 * 导入表初始化的数据
	 * 
	 * @param servletRequest
	 * @param servletResponse
	 * @param attachments
	 * @return
	 * @throws Exception
	 */
	@POST
	@Path("/importPollfee")
	@Consumes({ "multipart/form-data" })
	@Produces({ "application/json" })
	public Response ImportRecord(@Context HttpServletRequest servletRequest,
			@Context HttpServletResponse servletResponse,
			@QueryParam("commID") String commID, List<Attachment> attachments)
			throws Exception;
	
	
	/***
	 * 根据规则ID查询和期数查询录入的费用
	 * 
	 * @param servletRequest
	 * @param servletResponse
	 * @param commID
	 * @return
	 * @throws Exception
	 */
	
	@POST
	@Path("getProllfeeByMap")
	@Produces({ "application/json" })
	public Response getProllfeeByMap(@Context HttpServletRequest servletRequest,
			@Context HttpServletResponse servletResponse,Map<String,Object> params)
			throws Exception;
	
	
	/***
	 * 根据规则ID查询和期数查询录入的费用
	 * 
	 * @param servletRequest
	 * @param servletResponse
	 * @param commID
	 * @return
	 * @throws Exception
	 */
	
	@POST
	@Path("editProllfee")
	@Produces({ "application/json" })
	public Response editProllfee(@Context HttpServletRequest servletRequest,
			@Context HttpServletResponse servletResponse,PollfeeEditDto pollfeeEditDto)
			throws Exception;
	

}
